package com.mzkj.wanjulaile.mobile.api.modules.account.mapper;

import com.mzkj.wanjulaile.mobile.api.modules.account.entity.BuyVip;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * Created by wangxw on 16/7/26.
 */
@Repository
public interface BuyVipMapper{

    BuyVip getByPayNumber(String payNumber);

    BuyVip get(String id);

    int updatePayStatus(BuyVip buyVip);

    void insert(BuyVip buyVip);

    void update (BuyVip buyVip);

    //查询有效的未激活会员记录,一个会员下面只允许有一个
    List<BuyVip> findInactive(String accountId);

    List<BuyVip> findCurVip(String accountId);
    //查询所有vip过期账号
    List<BuyVip> findAllDeadVip();
    List<BuyVip> findAllUnactiveVip();

    int batchDeadUpdate(@Param("buyVips") List<BuyVip> buyVips);

    int batchActiveUpdate(@Param("buyVips") List<BuyVip> buyVips);

    /**
     * 查询账号下的所有购买记录
     * @param accountId
     * @return
     */
    List<BuyVip> findListByAccountId(String accountId);

    /**
     * 退押金操作修改状态
     * @param id
     * @return
     */
    int updateRefundStatus(String id);

    Integer calDepositByAccountId(String accountId);

    /**
     * 过期状态的体验会员
     * @param accountId
     * @return
     */
    BuyVip findTempVipByAccountId(String accountId);

    /**
     * 账号VIP过期时间
     * @param accountId
     * @return
     */
    Date findMaxDeadTimeByAccountId(String accountId);

    /**
     * 是否用过周度优惠券
     * @param accountId
     * @return
     */
    BuyVip findExistUseWeekCoupon(String accountId);

    /**
     * 是否购买过月度及月度以上的记录
     * @param buyVip
     * @return
     */
    List<BuyVip> isExistBuy(BuyVip buyVip);

    //置空vip起始时间
    void setNullVipTime(BuyVip curBuyVip);

    List<BuyVip> findFullVipByAccountId(String id);
    /**
     * 根据账号查找购买的vip 未使用status = 0
     * @param accountId
     * @return
     */
    List<BuyVip> findPaidListByAccountId(String accountId);

    int batchUpdateStatus(@Param("paidBuyVipList") List<BuyVip> paidBuyVipList);

    List<BuyVip> hasBuy(BuyVip buyVip);

    /**
     * 更新购买记录使用状态
     * @param buyVip
     */
    void updateStatus(BuyVip buyVip);

    BuyVip findDepositByAccountId(String accountId);

    void resetStatus(String accountId);

    List<BuyVip> unUseBuyVip(String id);

    BuyVip getSimple(BuyVip curBuyVip);
}
